package cn.com.twoke.app.pin_dou_dou.utils;

import cn.hutool.core.img.ImgUtil;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 图像处理工具类
 */
public class ImageProcessingUtils {

    /**
     * 从文件路径加载图像
     * @param filePath 图像文件路径
     * @return BufferedImage对象
     */
    public static BufferedImage loadImage(String filePath) {
        try (InputStream is = Files.newInputStream(Paths.get(filePath))) {
            return ImageIO.read(is);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 将图像缩放到目标尺寸
     * @param originalImage 原始图像
     * @param targetWidth 目标宽度
     * @param targetHeight 目标高度
     * @param imageType 图像类型 (如 BufferedImage.TYPE_INT_RGB)
     * @return 缩放后的图像
     */
    public static BufferedImage scaleImage(BufferedImage originalImage, int targetWidth, int targetHeight, int imageType) {
        if (originalImage == null) {
            throw new IllegalArgumentException("原始图像不能为空");
        }
        return ImgUtil.toBufferedImage(ImgUtil.scale(originalImage, targetWidth, targetHeight), imageType);
    }
    
    /**
     * 创建一个新的BufferedImage
     * @param width 图像宽度
     * @param height 图像高度
     * @param imageType 图像类型 (如 BufferedImage.TYPE_INT_RGB)
     * @return 新创建的BufferedImage
     */
    public static BufferedImage createImage(int width, int height, int imageType) {
        return new BufferedImage(width, height, imageType);
    }
}